home *** CD-ROM | disk | FTP | other *** search
-
-
-
- TTTTccccllll((((3333TTTTccccllll)))) TTTTccccllll((((3333TTTTccccllll))))
-
-
-
- NNNNAAAAMMMMEEEE
- Tcl - Summary of Tcl language syntax.
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- The following rules define the syntax and semantics of the Tcl language:
-
- [1] A Tcl script is a string containing one or more commands. Semi-
- colons and newlines are command separators unless quoted as
- described below. Close brackets are command terminators during
- command substitution (see below) unless quoted.
-
- [2] A command is evaluated in two steps. First, the Tcl interpreter
- breaks the command into _w_o_r_d_s and performs substitutions as
- described below. These substitutions are performed in the same way
- for all commands. The first word is used to locate a command
- procedure to carry out the command, then all of the words of the
- command are passed to the command procedure. The command procedure
- is free to interpret each of its words in any way it likes, such as
- an integer, variable name, list, or Tcl script. Different commands
- interpret their words differently.
-
- [3] Words of a command are separated by white space (except for
- newlines, which are command separators).
-
- [4] If the first character of a word is double-quote (``"'') then the
- word is terminated by the next double-quote character. If semi-
- colons, close brackets, or white space characters (including
- newlines) appear between the quotes then they are treated as
- ordinary characters and included in the word. Command substitution,
- variable substitution, and backslash substitution are performed on
- the characters between the quotes as described below. The double-
- quotes are not retained as part of the word.
-
- [5] If the first character of a word is an open brace (``{'') then the
- word is terminated by the matching close brace (``}''). Braces nest
- within the word: for each additional open brace there must be an
- additional close brace (however, if an open brace or close brace
- within the word is quoted with a backslash then it is not counted in
- locating the matching close brace). No substitutions are performed
- on the characters between the braces except for backslash-newline
- substitutions described below, nor do semi-colons, newlines, close
- brackets, or white space receive any special interpretation. The
- word will consist of exactly the characters between the outer
- braces, not including the braces themselves.
-
- [6] If a word contains an open bracket (``['') then Tcl performs _c_o_m_m_a_n_d
- _s_u_b_s_t_i_t_u_t_i_o_n. To do this it invokes the Tcl interpreter recursively
- to process the characters following the open bracket as a Tcl
- script. The script may contain any number of commands and must be
- terminated by a close bracket (``]''). The result of the script
- (i.e. the result of its last command) is substituted into the word
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- TTTTccccllll((((3333TTTTccccllll)))) TTTTccccllll((((3333TTTTccccllll))))
-
-
-
- in place of the brackets and all of the characters between them.
- There may be any number of command substitutions in a single word.
- Command substitution is not performed on words enclosed in braces.
-
- [7] If a word contains a dollar-sign (``$'') then Tcl performs _v_a_r_i_a_b_l_e
- _s_u_b_s_t_i_t_u_t_i_o_n: the dollar-sign and the following characters are
- replaced in the word by the value of a variable. Variable
- substitution may take any of the following forms:
-
- $$$$_n_a_m_e _N_a_m_e is the name of a scalar variable; the name is
- terminated by any character that isn't a letter,
- digit, or underscore.
-
- $$$$_n_a_m_e((((_i_n_d_e_x)))) _N_a_m_e gives the name of an array variable and _i_n_d_e_x
- gives the name of an element within that array. _N_a_m_e
- must contain only letters, digits, and underscores.
- Command substitutions, variable substitutions, and
- backslash substitutions are performed on the
- characters of _i_n_d_e_x.
-
- $$$${{{{_n_a_m_e}}}} _N_a_m_e is the name of a scalar variable. It may
- contain any characters whatsoever except for close
- braces.
-
- There may be any number of variable substitutions in a single word.
- Variable substitution is not performed on words enclosed in braces.
-
- [8] If a backslash (``\'') appears within a word then _b_a_c_k_s_l_a_s_h
- _s_u_b_s_t_i_t_u_t_i_o_n occurs. In all cases but those described below the |
- backslash is dropped and the following character is treated as an |
- ordinary character and included in the word. This allows characters
- such as double quotes, close brackets, and dollar signs to be
- included in words without triggering special processing. The
- following table lists the backslash sequences that are handled
- specially, along with the value that replaces each sequence.
-
- \aaaa Audible alert (bell) (0x7). |
-
- \bbbb Backspace (0x8).
-
- \ffff Form feed (0xc).
-
- \nnnn Newline (0xa).
-
- \rrrr Carriage-return (0xd).
-
- \tttt Tab (0x9).
-
- \vvvv Vertical tab (0xb).
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- TTTTccccllll((((3333TTTTccccllll)))) TTTTccccllll((((3333TTTTccccllll))))
-
-
-
- \<<<<nnnneeeewwwwlllliiiinnnneeee>>>>_w_h_i_t_e_S_p_a_c_e
- A single space character replaces the backslash, newline, and |
- all white space after the newline. This backslash sequence is|
- unique in that it is replaced in a separate pre-pass before |
- the command is actually parsed. This means that it will be |
- replaced even when it occurs between braces, and the resulting|
- space will be treated as a word separator if it isn't in |
- braces or quotes.
-
- \\ Backslash (``\'').
-
- \_o_o_o The digits _o_o_o (one, two, or three of them) give the octal
- value of the character.
-
- \xxxx_h_h The hexadecimal digits _h_h give the hexadecimal value of the |
- character. Any number of digits may be present.
-
- Backslash substitution is not performed on words enclosed in braces,
- except for backslash-newline as described above.
-
- [9] If a hash character (``#'') appears at a point where Tcl is
- expecting the first character of the first word of a command, then
- the hash character and the characters that follow it, up through the
- next newline, are treated as a comment and ignored. The comment
- character only has significance when it appears at the beginning of
- a command.
-
- [10] Each character is processed exactly once by the Tcl interpreter as
- part of creating the words of a command. For example, if variable
- substitution occurs then no further substitutions are performed on
- the value of the variable; the value is inserted into the word
- verbatim. If command substitution occurs then the nested command is
- processed entirely by the recursive call to the Tcl interpreter; no
- substitutions are performed before making the recursive call and no
- additional substitutions are performed on the result of the nested
- script.
-
- [11] Substitutions do not affect the word boundaries of a command. For
- example, during variable substitution the entire value of the
- variable becomes part of a single word, even if the variable's value
- contains spaces.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-